/* -*- C++ -*-  vim:set syntax=cpp: 
 *
 * (C) 2004-2009 Frank-Rene Schaefer 
 * ABSOLUTELY NO WARRANTY               */
#ifndef __QUEX_INCLUDE_GUARD__ANALYZER__MEMBER__BASIC
#define __QUEX_INCLUDE_GUARD__ANALYZER__MEMBER__BASIC

#include <quex/code_base/definitions>
#include <quex/code_base/buffer/Buffer>

#include <quex/code_base/temporary_macros_on>

QUEX_NAMESPACE_MAIN_OPEN

    TEMPLATE_IN(InputHandleT) void
    QUEX_NAME(construct_basic)(QUEX_TYPE_ANALYZER*   me,
                               InputHandleT*         input_handle,
                               QUEX_TYPE_CHARACTER*  BufferMemory,
                               const size_t          BufferMemorySize,
                               QUEX_TYPE_CHARACTER*  EndOfFileP,
                               const char*           CharacterEncodingName, 
                               const size_t          TranslationBufferMemorySize,
                               bool                  ByteOrderReversionF);

    QUEX_INLINE void 
    QUEX_NAME(destruct_basic)(QUEX_TYPE_ANALYZER* me);

    TEMPLATE_IN(InputHandleT) void
    QUEX_NAME(reset_basic)(QUEX_TYPE_ANALYZER*   me,
                           InputHandleT*         input_handle, 
                           const char*           CharacterEncodingName, 
                           const size_t          TranslationBufferMemorySize);

    QUEX_INLINE void      QUEX_NAME(buffer_reload_backward)(QUEX_NAME(Buffer)* buffer);
    QUEX_INLINE void      QUEX_NAME(buffer_reload_forward)(QUEX_NAME(Buffer)*  buffer, 
                                                           QUEX_TYPE_CHARACTER_POSITION* post_context_start_position,
                                                           const size_t                  PostContextN);

QUEX_NAMESPACE_MAIN_CLOSE

#include <quex/code_base/temporary_macros_off>

#endif /* __QUEX_INCLUDE_GUARD__ANALYZER__MEMBER__BASIC */
